<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //单例模式核心代码  
       const Person =  (function(){

            //类放到里边  保证实例化对象 必须走这里 
            class Person{
                constructor(){
                    // 只有第一次实例化对象才走这里
                    this.name = '';
                    this.single(); // 因为constructor仅仅执行一次
                    // constructor里边调用这个方法
                    // 这个方法就只执行一次 
                }
                // 如果想实现一个方法 只执行一次  
                single(){

                }

                // 每次实例化对象都会调用这个方法
                init(val){
                    this.name = val;
                }
            }

            let instance = null;

            return function(...arg){
                // 只有第一次实例化对象才走进if 
                // 走进if 才走 constructor构造器方法  
                if(!instance){
                    instance = new Person();
                }

                // 每次实例化对象都执行  
                instance.init(...arg);

                return  instance
            }



          
        })();


        
        const p1 = new Person('张三');
        console.log(p1);
        const p2 = new Person('李四');
        console.log(p2);
        const p3 = new Person('王五');
        console.log(p3);


    </script>
</body>
</html>